//Внутренняя библиотека.
#include "vidfilter.h"


//===========================================================================//
//=Заголовок: VidFilter::VidFilter() - public
//=Параметры:
//=Описание: Конструктор.
//===========================================================================//
VidFilter::VidFilter(int index, QObject *parent) : QObject(parent)
{filterIndex = index;}


//===========================================================================//
//=Заголовок: VidFilter::~VidFilter() - public
//=Параметры:
//=Описание: Деструктор.
//===========================================================================//
VidFilter::~VidFilter()
{
foreach(VidFilter *filter, filtersList)
	{
	if(!filter) continue;
	delete filter;
}
}


//===========================================================================//
//=Заголовок: bool VidFilter::getListParam() - public
//=Параметры:
//=Описание: Функция возврата списка значений параметра фильтра.
//===========================================================================//
bool VidFilter::getListParam(DevParam::GET_LIST_PARAM param, QHash<int, QVariant> *valhash)
{
foreach(VidFilter *filter, filtersList)
	{
	if(!filter) continue;
	if(filter->getListParam(param, valhash)) return true;
}

return false;
}


//===========================================================================//
//=Заголовок: bool VidFilter::getParam() - public
//=Параметры:
//=Описание: Функция возврата параметра фильтра.
//===========================================================================//
bool VidFilter::getParam(DevParam::GET_PARAM param, QVariant *value)
{
foreach(VidFilter *filter, filtersList)
	{
	if(!filter) continue;
	if(filter->getParam(param, value)) return true;
}

return false;
}


//===========================================================================//
//=Заголовок: bool VidFilter::setParam() - public
//=Параметры:
//=Описание: Функция установки параметра фильтра.
//===========================================================================//
bool VidFilter::setParam(DevParam::SET_PARAM param, QVariant value)
{
foreach(VidFilter *filter, filtersList)
	{
	if(!filter) continue;
	if(filter->setParam(param, value)) return true;
}

return false;
}


//===========================================================================//
//=Заголовок: bool VidFilter::operator==() const - public
//=Параметры:
//=Описание: Оператор сравнения.
//===========================================================================//
bool VidFilter::operator==(const VidFilter &filter) const
{return (filter.filterIndex == filterIndex);}


//===========================================================================//
//=Заголовок: bool VidFilter::connectFilter() - protected
//=Параметры:
//=Описание: Функция подключения фильтра.
//===========================================================================//
bool VidFilter::connectFilter(VidFilter *filter)
{
if(filtersList.contains(filter)) return false;
connect(filter, SIGNAL(information(const QString &)), this, SIGNAL(information(const QString &)));
connect(filter, SIGNAL(warning(const QString &)), this, SIGNAL(warning(const QString &)));
connect(filter, SIGNAL(critical(const QString &)), this, SIGNAL(critical(const QString &)));
filtersList.append(filter);
return true;
}


//===========================================================================//
//=Заголовок: bool VidFilter::disconnectFilter() - protected
//=Параметры:
//=Описание: Функция отключения фильтра.
//===========================================================================//
bool VidFilter::disconnectFilter(VidFilter *filter)
{
if(!filtersList.contains(filter)) return false;
disconnect(filter, SIGNAL(information(const QString &)), this, SIGNAL(information(const QString &)));
disconnect(filter, SIGNAL(warning(const QString &)), this, SIGNAL(warning(const QString &)));
disconnect(filter, SIGNAL(critical(const QString &)), this, SIGNAL(critical(const QString &)));
filtersList.removeOne(filter);
return true;
}
